#include <iostream>
#include <string>
#include "sock.hpp"
#include "protocol.hpp"
#include "servercal.hpp"
#include "tcpserver.hpp"

static void Usage(std::string proc)
{
    std::cout << "\n\t Usage" << proc << "./tcpserver.exe port\n" << std::endl;
}

int main(int argc, char* argv[])
{
    if(argc != 2)
    {
        Usage(argv[0]);
        return 1;
    }

    uint16_t port = std::stoi(argv[1]);
    servercal cal;
    TcpServer tsr(port, std::bind(&servercal::Calculator, &cal, std::placeholders::_1));

    tsr.init();
    tsr.start();

    return 0;
}
// int main()
// {
//     Request re(123,456,'+');
//     std::string content;
//     re.serialize(content);
//     std::cout << content << std::endl;

//     std::string package = Encode(content);
//     std::cout << package << std::endl;

//     content = "";
//     Decode(package, content);
//     std::cout << content << std::endl;
    
//     re.deserialize(content);
//     std::cout << re._x << std::endl;
//     std::cout << re._op << std::endl;
//     std::cout << re._y << std::endl;


//     return 0;
// }